<?php

class MD5Crypt {

    function keyED($txt, $encrypt_key) {
        $encrypt_key = md5($encrypt_key);
        $ctr = 0;
        $tmp = "";
        for ($i = 0; $i < strlen($txt); $i++) {
            if ($ctr == strlen($encrypt_key))
                $ctr = 0;
            $tmp.= substr($txt, $i, 1) ^ substr($encrypt_key, $ctr, 1);
            $ctr++;
        }
        return $tmp;
    }

    function Encrypt($txt, $key) {
        srand((double) microtime() * 1000000);
        $encrypt_key = md5(rand(0, 32000));
        $ctr = 0;
        $tmp = "";
        for ($i = 0; $i < strlen($txt); $i++) {
            if ($ctr == strlen($encrypt_key))
                $ctr = 0;
            $tmp.= substr($encrypt_key, $ctr, 1) .
                    (substr($txt, $i, 1) ^ substr($encrypt_key, $ctr, 1));
            $ctr++;
        }
        return base64_encode($this->keyED($tmp, $key));
    }

    function Decrypt($txt, $key) {
        $txt = $this->keyED(base64_decode($txt), $key);
        $tmp = "";
        for ($i = 0; $i < strlen($txt); $i++) {
            $md5 = substr($txt, $i, 1);
            $i++;
            $tmp.= (substr($txt, $i, 1) ^ $md5);
        }
        return $tmp;
    }

    function RandPass() {
        $randomPassword = "";
        srand((double) microtime() * 1000000);
        for ($i = 0; $i < 8; $i++) {
            $randnumber = rand(48, 120);

            while (($randnumber >= 58 && $randnumber <= 64) || ($randnumber >= 91 && $randnumber <= 96)) {
                $randnumber = rand(48, 120);
            }

            $randomPassword .= chr($randnumber);
        }
        return $randomPassword;
    }

}

?>